#ifndef STL_WARNINGS_H
#define STL_WARNINGS_H

#if defined (_MSC_VER)

#pragma warning(push)
#pragma warning(disable: 4018)  // signed/unsigned mismatch
//brrrrrrrrrrrrrrrrrr
//#pragma warning(disable: 4786)  // signed/unsigned mismatch
//brrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
#pragma warning(disable: 4097)  // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
#pragma warning(disable: 4100)  // unreferenced formal parameter
#pragma warning(disable: 4127)  // conditional expression is constant
#pragma warning(disable: 4146)  // unary minus operator applied to unsigned type,result still unsigned
#pragma warning(disable: 4231)	// disable warnings on extern before template instantiation
#pragma warning(disable: 4244)  // 'conversion' conversion from 'type1' to 'type2', possible loss of data
#pragma warning(disable: 4245)  // conversion from 'type1' to 'type2',signed/unsigned mismatch
#pragma warning(disable: 4251)	// 'TYPE-OF-DATA-MEMBER' needs to have dll-interface to be used by clients of 'ENCLOSING-TYPE'
#pragma warning(disable: 4275)	// non dll-interface 'BASE-TYPE' used as base for dll-interface 'DERIVED-TYPE'
#pragma warning(disable: 4284)  // return type for 'identifier::operator ->' 
#pragma warning(disable: 4503)	// decorated name length exceeded, name was truncated
#pragma warning(disable: 4511)  // 'class' : copy constructor could not be generated
#pragma warning(disable: 4512)  // 'class' : assignment operator could not be generated
#pragma warning(disable: 4514)  // unreferenced inline/local function has been removed
#pragma warning(disable: 4518)  // __declspec(dllexport ) ' : storage-class or type specifier(s) unexpected here; ignored
#pragma warning(disable: 4530)	// C++ exception handler used, but unwind semantics are not enabled. Specify -GX#pragma warning(disable: 4663)  // C++ language change: to explicitly specialize class template 'vector'
#pragma warning(disable: 4660)	// emplate-class specialization is already instantiated
#pragma warning(disable: 4702)  // unreachable code
#pragma warning(disable: 4710)  // 'function' : function not inlined
#pragma warning(disable: 4786)  // identifier was truncated to 'number' characters in the debug information
#pragma warning(disable: 4800)	// 'int' : forcing value to bool 'true' or 'false'
#pragma warning(disable: 4804)	// '<' : unsafe use of type 'bool' in operation

// BUG: C4786 Warning Is Not Disabled with #pragma Warning
// STATUS: Microsoft has confirmed this to be a bug in the Microsoft product. 
// This warning can be ignored. This occured only in the <map> container.

#endif	// _MSC_VER	 

#endif	
